package com.agencia.presentacion;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;




import com.agencia.dominio.Terminal;
import com.agencia.dominio.Usuario;
import com.agencia.logica.IAdminAgenciaCobranza;

/**
 * Servlet implementation class Controller
 */
public class Controller extends HttpServlet {
	private static final long serialVersionUID = 1L;
   
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Controller() {
        super();
        // TODO Auto-generated constructor stub
    }

    	
	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String pagina = request.getParameter("pg");
		try {
			
			if (pagina.equals("T")) {
				//rediraccion desde menu.jsp a Terminales
				RequestDispatcher rd = request.getRequestDispatcher("Terminales.jsp");
				ArrayList<Terminal> terminales = IAdminAgenciaCobranza.geIAdminTerminal().SelectAll();
				request.setAttribute("rterminales", terminales);
				rd.forward(request, response);
			}else if (pagina.equals("U")) {
				//rediraccion desde menu.jsp a Usuarios
				RequestDispatcher rd = request.getRequestDispatcher("Usuarios.jsp");
				ArrayList<Usuario> usuarios = IAdminAgenciaCobranza.getIAdminUsuario().selectAllUsuarios();
				request.setAttribute("rusuarios", usuarios);
				rd.forward(request, response);
				
			}else if (pagina.equals("AT")) {
				//redireccion desde Terminals.jsp a alta terminal
				response.sendRedirect("AltaTerminal.jsp");
				
			}else if (pagina.equals("MT")){
				//redireccion desde Terminals.jsp a modificar terminal
				Integer idt = Integer.parseInt(request.getParameter("id"));
				Terminal modt = IAdminAgenciaCobranza.geIAdminTerminal().buscarTerminalaBD(idt);
				RequestDispatcher rd = request.getRequestDispatcher("ModificarTerminal.jsp");
				request.setAttribute("mterminal", modt);
				rd.forward(request, response);
			}else if (pagina.equals("AU")) {
				//redireccion desde Usuarios.jsp a alta Usuario
				response.sendRedirect("AltaUsuario.jsp");
			}else if (pagina.equals("MU")) {
				//redirecciono desde Usuario.jsjp a modificar usuario
				Integer id = Integer.parseInt(request.getParameter("id"));
				Usuario modu = IAdminAgenciaCobranza.getIAdminUsuario().obtenerUsuarioxId(id);
				RequestDispatcher rd = request.getRequestDispatcher("ModificarUsuario.jsp");
				request.setAttribute("musuario", modu);
				rd.forward(request, response);
			}else if(pagina.equals("AUTer")){
				//redirecciono desde Usuario.jsjp a asociar terminal usuario
				Integer id = Integer.parseInt(request.getParameter("id"));
				Usuario modu = IAdminAgenciaCobranza.getIAdminUsuario().obtenerUsuarioxId(id);
				//ArrayList<Terminal> terminales = IAdminAgenciaCobranza.geIAdminTerminal().SelectAll();
				ArrayList<Terminal> terminales = IAdminAgenciaCobranza.getIAdminUsuario().selectNotTerminalUsuario(id);
				RequestDispatcher rd = request.getRequestDispatcher("AsociarTerminal.jsp");
				request.setAttribute("ausuario", modu);
				request.setAttribute("aterminales", terminales);
				rd.forward(request, response);
				
				
			}else if (pagina.equals("CS")) {
				HttpSession s = request.getSession(false); 
				s.invalidate();
				response.sendRedirect("login.jsp");
			}else if (pagina.equals("IS")) {
				response.sendRedirect("login.jsp");
				
			}
			
		} catch (Exception e) {
			// TODO: handle exception
		}
		
		
				
	}

	
	
	
	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		/*	
		*/
		try {
		String pagina = request.getParameter("pg");
		
		if(pagina.equals("I")){
			//Login de Usuario Administrador
			String nombre = request.getParameter("login");
			String password = request.getParameter("pass");
			boolean usbd = IAdminAgenciaCobranza.getIAdminUsuario().Login(nombre, password, 0);
			if(usbd == true){
				HttpSession s = request.getSession(true);
				s.setAttribute("usuario", nombre);
				response.sendRedirect("menu.jsp");
			}else {
				PrintWriter out = response.getWriter();
			    out.println("Usuario Invalido");
			}
			
		}else if (pagina.equals("IT")) {
			//Ingreso de Terminal
			Terminal t = new Terminal();
			
			String nombre = request.getParameter("nombre");
			String domicilio = request.getParameter("domicilio");
			String telefono = request.getParameter("telefono");
			
			t.setNombre(nombre);
			t.setDomicilio(domicilio);
			t.setTelefono(telefono);
			IAdminAgenciaCobranza.geIAdminTerminal().IngresarTerminal(t);
			RequestDispatcher rd = request.getRequestDispatcher("Terminales.jsp");
			ArrayList<Terminal> terminales = IAdminAgenciaCobranza.geIAdminTerminal().SelectAll();
			request.setAttribute("rterminales", terminales);
			rd.forward(request, response);
			
			
		}else if (pagina.equals("IMT")) {
			//Modifico Terminal
			Terminal t = new Terminal();
			
			String nombre = request.getParameter("nombre");
			String domicilio = request.getParameter("domicilio");
			String telefono = request.getParameter("telefono");
			Integer id = Integer.parseInt(request.getParameter("id"));
			
			t.setNombre(nombre);
			t.setId(id);
			t.setDomicilio(domicilio);
			t.setTelefono(telefono);
			IAdminAgenciaCobranza.geIAdminTerminal().ModificarTerminal(t);
			RequestDispatcher rd = request.getRequestDispatcher("Terminales.jsp");
			ArrayList<Terminal> terminales = IAdminAgenciaCobranza.geIAdminTerminal().SelectAll();
			request.setAttribute("rterminales", terminales);
			rd.forward(request, response);
			
			
		}else if (pagina.equals("IU")) {
			//Ingreso Usuario
			Usuario u = new Usuario();
			String nom = request.getParameter("nombre");
			String us = request.getParameter("usuario");
			String pass = request.getParameter("password");
			
			u.setNombre(nom);
			u.setUsuario(us);
			u.setPass(pass);
			IAdminAgenciaCobranza.getIAdminUsuario().IngresarUsuario(u);
			RequestDispatcher rd = request.getRequestDispatcher("Usuarios.jsp");
			ArrayList<Usuario> usuarios = IAdminAgenciaCobranza.getIAdminUsuario().selectAllUsuarios();
			request.setAttribute("rusuarios", usuarios);
			rd.forward(request, response);
			
		}else if (pagina.equals("IMU")) {
			//Modifica Usuario
			Usuario u = new Usuario();
			String nom = request.getParameter("nombre");
			String us = request.getParameter("usuario");
			String pass = request.getParameter("password");
			Integer id = Integer.parseInt(request.getParameter("id"));
			
			u.setNombre(nom);
			u.setUsuario(us);
			u.setPass(pass);
			u.setId(id);
			IAdminAgenciaCobranza.getIAdminUsuario().ModificarUsuario(u);
			RequestDispatcher rd = request.getRequestDispatcher("Usuarios.jsp");
			ArrayList<Usuario> usuarios = IAdminAgenciaCobranza.getIAdminUsuario().selectAllUsuarios();
			request.setAttribute("rusuarios", usuarios);
			rd.forward(request, response);
			
		}else if (pagina.equals("AUT")) {
			Integer idus = Integer.parseInt(request.getParameter("id"));
			Integer idt = Integer.parseInt(request.getParameter("selectT"));
			if(IAdminAgenciaCobranza.getIAdminUsuario().asociarTerminalaUsuario(idus, idt)){
				PrintWriter out = response.getWriter();
			    out.println("Terminal Asosciada con exito");
			}
			
		}
		
		} catch (Exception e) {
			
			System.out.println(e.getMessage());
		
		}
		/*
		try {
			IAdminAgenciaCobranza.geIAdminTerminal().IngresarTerminal(t);
		} catch (TerminalExisteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (TerminalErrorDatosException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}	
		
		*/
	}

}
